<?php
/**
*
* example目录下为简单的支付样例，仅能用于搭建快速体验微信支付使用
* 样例的作用仅限于指导如何使用sdk，在安全上面仅做了简单处理， 复制使用样例代码时请慎重
* 请勿直接直接使用样例对外提供服务
* 
**/

require_once __DIR__."/WxPay.Config.php";

//初始化日志
$logHandler= new CLogFileHandler(date('Y-m-d').'.log');
$log = Log::Init($logHandler, 15);

//模式一
//不再提供模式一支付方式
/**

 * 流程：
 * 1、组装包含支付信息的url，生成二维码
 * 2、用户扫描二维码，进行支付
 * 3、确定支付之后，微信服务器会回调预先配置的回调地址，在【微信开放平台-微信支付-支付配置】中进行配置
 * 4、在接到回调通知之后，用户进行统一下单支付，并返回支付信息以完成支付（见：native_notify.php）
 * 5、支付完成之后，微信服务器会通知支付成功
 * 6、在支付成功通知中需要查单确认是否真正支付成功（见：notify.php）
 */

$notify = new NativePay();
$url1 = $notify->GetPrePayUrl("m1_123456789");
$url1e = str_replace(['?','&'], ['%3F','%26'], $url1);

//模式二
/**
 * 流程：
 * 1、调用统一下单，取得code_url，生成二维码
 * 2、用户扫描二维码，进行支付
 * 3、支付完成之后，微信服务器会通知支付成功
 * 4、在支付成功通知中需要查单确认是否真正支付成功（见：notify.php）
 */

//服务器异步通知页面路径
$kar = \imcat\glbDBExt::dbAutID('coms_corder');
$order_id = $kar[0]; $fee = '0.01'; //67.89
$notify_url = $root_url."/a3rd/wepv3/example/native_notify.php";
$kstr = "$fee.$order_id.".time();
$kenc = \imcat\comConvert::sysEncode($kstr);
$attach = "$kstr@$kenc";

/*
$t1 = time();
for($i=1;$i<40;$i++){
    $ti = \imcat\basKeyid::fmtBase32(KEY_NUM10.strtoupper(KEY_CHR26),$t1+$i,36);
    echo "$ti<br>\n";
}*/

//echo $notify_url;
// http://paysdk.weixin.qq.com/notify.php
// http://www.gdzhuoke.com/qygwxregister.php

/*
    {"appid":"wx4741f940c8c8e4e1","attach":"test","bank_type":"OTHERS","cash_fee":"1","fee_type":"CNY","is_subscribe":"Y",
    "mch_id":"1528434431","nonce_str":"d8rmm63f78m8ggm9inebc7hm2vje3hns",
    "openid":"oRAzL1dV784p6f60XNxm97S7SLa0","out_trade_no":"sdkphp12345678920201113152703",
    "result_code":"SUCCESS","return_code":"SUCCESS","sign":"37E830670904361C5F509C3C4F8C9675",
    "time_end":"20201113152721","total_fee":"1","trade_type":"NATIVE","transaction_id":"4200000825202011132906639509"}
*/

$input = new WxPayUnifiedOrder();
$input->SetBody("售后单($order_id)"); // (x)支付单简要描述
$input->SetAttach($attach); // 设置附加数据，在查询API和支付通知中原样返回，该字段主要用于商户携带订单的自定义数据
$input->SetOut_trade_no($order_id); // 设置商户系统内部的订单号,32个字符内、可包含字母, 其他说明见商户订单号
$input->SetTotal_fee($fee*100);
$input->SetTime_start(date("YmdHis")); //echo date("YmdHis");
$input->SetTime_expire(date("YmdHis", time() + 600));
//$input->SetGoods_tag("test"); // 设置商品标记，代金券或立减优惠功能的参数，说明详见代金券或立减优惠
$input->SetNotify_url($notify_url);
$input->SetTrade_type("NATIVE");
$input->SetProduct_id($order_id); // (x)设置商品ID

$result = $notify->GetPayUrl($input);
$url2 = empty($result["code_url"]) ? 'err_url' : $result["code_url"];
$url2e = str_replace('?', '%3F', $url2);

?>

<html>
<head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1" /> 
    <title>微信支付样例-退款</title>
</head>
<body>

    <p>
        encode: <?='[?-&] -=> '.urlencode('?-&')?>, <br>
        order_id: <?=$order_id?>, <br>
        attach: <?=$attach?>, <br>
    </p>

	<div style="margin-left: 10px;color:#556B2F;font-size:30px;font-weight: bolder;">扫描支付模式一</div><br/>
	<img alt="模式一扫码支付" src="qrcode.php?data=<?=$url1e?>" style="width:150px;height:150px;"/>
    <p><?=$url1e;?></p>
	<br/><br/><br/>
	<div style="margin-left: 10px;color:#556B2F;font-size:30px;font-weight: bolder;">扫描支付模式二</div><br/>
	<img alt="模式二扫码支付" src="qrcode.php?data=<?=$url2e?>" style="width:150px;height:150px;"/>
    <p><?=$url2e?></p>
    <p><a href="<?=$url2?>"><?=$url2?></a></p>
	<div style="color:#ff0000"><b>微信支付样例程序，仅做参考</b></div>
	
</body>
</html>